Loading...
2024. 4. 12. 03:59

Python 제곱근 연산 **(1/2)를 함부로 하면 안되는 이유

10216번: Count Circle Groups (acmicpc.net) 10216번: Count Circle Groups 백준이는 국방의 의무를 수행하기 위해 떠났다. 혹독한 훈련을 무사히 마치고 나서, 정말 잘 생겼고 코딩도 잘하는 백준은 그 특기를 살려 적군의 진영을 수학적으로 분석하는 일을 맡게 되었 www.acmicpc.net 각 위치 A[i]가 (x,y)를 중심으로 가지고 반지름은 r인 원으로 주어지는데... 두 원이 서로 닿거나 겹친다면 두 원은 통신이 가능하다. 두 원이 서로 닿거나 겹칠려면 어떻게 해야하나? 두 원의 중심사이 거리 AB랑 r1+r2를 비교하면 된다. AB = (r1+r2)이면 두 원이 서로 닿는것이고 AB < (r1+r2)이면 두 원이 서로 겹치는 것이다. 원의 개수가 ..

Python dict indexing보다는 list indexing을 사용해야하는 이유

dict에서 key에 접근하는 시간과 list에서 index로 접근하는 시간은 O(1)인데, dict의 경우 hash로 구현되어 있어서 key,value가 많은 경우 hash collision으로 인해 list indexing보다 시간이 더 걸릴 수 있다. 만약 시간초과 판정을 받는다면 dict indexing을 list indexing으로 바꿀 수 있는지 체크해보자. https://deepdata.tistory.com/960 문자열 해싱(hashing) 기본 개념 배우기 String Hashing - Algorithms for Competitive Programming (cp-algorithms.com) String Hashing - Algorithms for Competitive Programming..

2023. 4. 16. 02:36

알고리즘 테크닉 - LR 테크닉

1. 문제 [3, 6, 2, 6, 7, 5, 2] 와 같이 숫자들이 주어졌을 때, 다음 질의에 대해 답하는 프로그램을 작성해보세요. 단, 질의마다 하나의 숫자가 주어지며 해당 번째 숫자를 제외한 다른 숫자들에 대해 인접한 숫자간의 차이의 합을 구해야 합니다. 예를 들어 질의로 5가 주어졌다면 5번째 숫자인 7을 제외한 다른 숫자들을 나열하면 [3, 6, 2, 6, 5, 2]가 되므로 인접한 숫자간의 차이의 합은 |3 - 6| + |6 - 2| + |2 - 6| + |6 - 5| + |5 - 2| = 15가 됩니다. 이때 주어지는 숫자는 1초과 N 미만임을 가정해도 좋습니다. -------------------------------------------------------------------------..

자바 알고리즘 기본 -입력을 받는 방법-

1. 최댓값 구하기 프로그램 3개의 정수를 입력받아 최댓값을 구하는 프로그램 package chap01; import java.util.Scanner; public class Max3 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("세 정수의 최댓값을 구합니다."); System.out.println("a의 값: "); int a = stdIn.nextInt(); System.out.println("b의 값: "); int b = stdIn.nextInt(); System.out.println("c의 값: "); int c = stdIn.nextInt(); //a,b,c..

2022. 12. 9. 02:52

파이썬 알고리즘 기본기 EOF(End of File) 배우기

1. 문제 10820번: 문자열 분석 (acmicpc.net) 10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있 www.acmicpc.net 2. 풀이 주어진 입력의 끝을 모를때, 어떻게 입력의 끝을 알고 문제를 풀 수 있을까? input파일을 프로그램이 읽어들이는데, 더 이상 읽을게 없을때 올바르게 프로그램을 종료할줄 알아야한다. 파이썬에서 한줄씩 입력을 받는 방법은 대표적으로 2가지가 있겠다 첫번째는 input()이고 두번째는 sys.stdin.readline() input()은 한줄을 읽을때, 개행문자를 제거하고 한줄을 읽어서 문자..

2022. 9. 11. 17:57

알고리즘 문제를 풀기위해 2차원 배열에서 이해해야할 테크닉들

1. 2차원 배열 선언 1-1) 일반적으로 [ [0,1,2,3], [1,2,3,4] ] 과 같이 [0,1,2,3], [1,2,3,4]는 각각 행을 나타내고 (0,1), (1,2), (2,3), (3,4)는 각각 열을 나타냄 세로의 길이(행의 개수), 가로의 길이(열의 개수)를 필요로 한다 1-2) 입력을 받을때 1 2 3 4 5 6 7 8 9 는 '1 2 3'을 리스트로 바꿀려면, input().split() 123 456 789 는 '123'을 리스트로 바꿀려면 list(input()) 2. 2차원 배열 순회하기 2-1) 행 우선 순회 2차원 배열 각 칸의 좌표를 (x,y)라고 하면, arr[y][x]로 접근할 수 있다 n*m 배열에서 for y in range(n): for x in range(m):..